//商品
(function() {
	var db = require("../db/index");
	var config = require("../_include/config");
	var db_table_name = config.dbname.goods;
	var db_id_prefix = config.dbIdPrefix.goods;
	var helper = require("../_include/helper");
	//构造函数
	var _con = function(info, bus_id, num) {
		//处理参数
		num = info.num || (info.num = num || 0);
		bus_id = info.bus_id || (info.bus_id = bus_id);

		var self = this;
		//商品编号
		self._id = db_id_prefix + Math.random().toString(16).substr(2) + (+new Date).toString(16);
		//操作记录
		self._his = [];

		var bus = BusCon.get(bus_id);
		if (!bus) {
			throwCusError("找不到指定商家")
		}
		//所属商家ID
		self.bus_id = info.bus_id;
		//销量
		self.sale_num = 0;
		//评价
		self.evaluations = [];
		//标签
		self.tags = []; //info.tags||[];
		//商品BUFF，代表着各种代码段，运作在前端后端以及各种触发时机中
		self.buffs = [];
		//所属分类
		self.classify = null;
		//使用自定义的分销比例
		self.use_custom_bina_id = false;

		//is_bina //是否是分销商品
		//TODO:添加自由搭配

		//所属的会员专区
		//self.card_factory_list

		self.create_time = +new Date;

		db.insert(db_table_name, self);


		//先插入在_initInfo，确保在classify、tag模块中找得到这个商品
		// //额外信息，包括所需价格与所需积分
		// self.info = info;
		self._initInfo(info);

		console.log("生成了一种商品：", info.name);

	};
	//技能
	module.exports = _con;
	_con.prototype = require("./skill");
	//静态方法
	_con.get = function(Id) {
		var result = _con.getAlone(Id);
		return _con.getInstance(result);
	};
	_con.getInstance = function(result) {
		if (result) {
			//计算价格
			result.getCash();
			//计算不同种类的会员对应的会员价
			result.getCardCash();
			//获取属性集合信息
			result.getGoodsArgsMap();
			//清理BUFF
			// result.getBuffs().forEach(function (buff) {
			// 	if (buff.buff_name=="商品二进制") {
			// 		result._removeBuff(buff._id)
			// 	}
			// });
			//是否下架了
			result.is_un_sold = result.isUnSold();
		}
		return result;
	};
	_con.getAlone = function(Id) {
		var result = db.find_by_id(db_table_name, Id);
		return _con.getAloneInstance(result);
	};
	_con.getAloneInstance = function(result) {
		if (result) {
			result.__proto__ = _con.prototype;
			// //如果商品的商家已经不存在了，删除这个商品
			// if (!db.find_by_id(config.dbname.bus, result.bus_id)) {
			// 	result.destroy();
			// 	return;
			// }
		}
		return result;
	};
	_con.mulGet = function(ids) {
		var db_args = ids.map(function(id) {
			return [db_table_name, id]
		});
		return db.mulCall("findById", db_args).map(function(obj) {
			obj = _con.getAloneInstance(obj);
			obj = _con.getInstance(obj);
			return obj;
		});
	};
	//获取具体花销
	/*goods_info格式如下：
	{
		goods_base_info:{price:price}//商品的基础价格信息
		buffs://混合完成的BUFFS信息
		num://数量
		user_id://买家
		bud_id://卖家
	}
	 */
	// _con.getCash = function (goods_info) {
	// 	// var buffs = 
	// }

	var BuffsCon = require("../buff/_con");
	var BusCon = require("../bus/_con");
}());